import random
import string

import cv2
import os

# 定义包含所有字母和数字的字符集
characters = string.ascii_letters + string.digits

# 从字符集中随机选择10个字符

# 视频文件路径
video_path = r'C:\Users\kang_\Desktop\0227大猪\1.mp4'
# 保存图片的目录
output_dir = r'C:\Users\kang_\Desktop\d'

# 检查保存目录是否存在，如果不存在则创建
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# 打开视频文件
cap = cv2.VideoCapture(video_path)

# 检查视频是否成功打开
if not cap.isOpened():
    print("Error opening video file")
    exit()

# 获取视频的帧率（FPS）
fps = cap.get(cv2.CAP_PROP_FPS)
# 计算每60秒对应的帧数
frame_interval = int(fps * 60 / 8)

# 初始化帧计数器
frame_count = 0

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 每60秒保存一次帧
    if frame_count % frame_interval == 0:
        # 生成保存图片的文件名
        random_chars = ''.join(random.choices(characters, k=5))
        src_name = os.path.basename(video_path).split('.')[0].replace("(", "_").replace(")", "_")
        image_name = os.path.join(output_dir, f'frame_{frame_count // frame_interval}_{random_chars}.jpg')
        # 保存帧为图片
        cv2.imwrite(image_name, frame)

    frame_count += 1

# 释放视频捕获对象
cap.release()
